﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Clinica_Frba
{
    public partial class BuscarAfiliadoForm : Form
    {
        Conexion sql = Conexion.getInstance();
        Utility util = Utility.getInstance();
        private System.Windows.Forms.Button BajaButton;
        public bool baja = false;
        public bool lista = false;
        bool searchHelp = false;
        decimal idAfiliado = -1;
        

        public BuscarAfiliadoForm()
        {
            InitializeComponent();
        }

        private void BuscarAfiliadoForm_Load(object sender, EventArgs e)
        {
            /*this.Id_Afiliado.Text = "1";
            this.Nro_Documento.Text = "0";
            this.tipoDocumento.Text = "DNI";*/

            if (baja == true)
            {
                this.Text = "Baja de Afiliado";
                this.Seleccionar.Enabled = false;
                this.Seleccionar.Visible = false;

                this.BajaButton = new System.Windows.Forms.Button();
                this.BajaButton.Location = new System.Drawing.Point(599, 319);
                this.BajaButton.Name = "BajaButton";
                this.BajaButton.Size = new System.Drawing.Size(99, 34);
                this.BajaButton.TabIndex = 19;
                this.BajaButton.Text = "Dar de Baja";
                this.BajaButton.UseVisualStyleBackColor = true;
                this.Controls.Add(this.BajaButton);
                this.BajaButton.Click += new System.EventHandler(this.BajaButton_Click);
                this.BajaButton.Show();
            }

            if (lista)
            {
                this.Text = "Buscar Afiliado";
                if (searchHelp)
                {
                    this.Seleccionar.Enabled = true;
                    this.Seleccionar.Visible = true;
                    this.Seleccionar.Text = "Seleccionar";
                }
                else
                {
                    this.Seleccionar.Enabled = false;
                    this.Seleccionar.Visible = false;
                }
            }
        }

        public decimal searchAfiliado()
        {
            lista = true;
            searchHelp = true;

            this.ShowDialog();

            return idAfiliado;
        }

        private void Buscar_Click(object sender, EventArgs e)
        {
            /*string nombreAfiliado = this.Nombre.Text;
            string apellidoAfiliado = this.Apellido.Text;
            string mailAfiliado = this.Mail.Text;
            string tipoDocumentoAfiliado = tipoDocumento.Text;
            decimal numDocumentoAfiliado;
            string usuario = this.Usuario.Text;*/


            try
            {
                foreach (Control control in this.Controls)
                {
                    if ((control.GetType().ToString() == "System.Windows.Forms.ComboBox") | (control.GetType().ToString() == "System.Windows.Forms.TextBox"))
                    {
                        if (control.Text.Length == 0)
                        {
                            control.Text = "";
                        }
                    }
                }


                string query =    
                    ("select p.Id_Paciente AS 'ID Paciente', p.Paciente_Nombre + ' ' + p.Paciente_Apellido AS 'Nombre', p.Paciente_Fecha_Nac AS 'Fecha de Nacimiento', p.Paciente_Documento AS 'Documento', p.Paciente_TipoDocumento AS 'Tipo de Documento', p.Paciente_Sexo AS 'Sexo', p.Paciente_Direccion AS 'Direccion', p.Paciente_Telefono AS 'Telefono', p.Paciente_Mail AS 'Mail', p.Paciente_EstadoCivil AS 'Estado Civil', p.Usuario, p.Habilitado " + 
                    "from b_sharp.Pacientes p " + 
                    "where p.Id_Paciente like '%" + Id_Afiliado.Text + 
                    "%' and p.Paciente_Nombre like '%" + Nombre.Text + 
                    "%' and p.Paciente_Apellido like '%" + Apellido.Text + 
                    "%' and p.Paciente_Mail like '%" + Mail.Text + 
                    "%' and p.Paciente_Documento like '%" + Nro_Documento.Text + 
                    "%' and p.Paciente_TipoDocumento like '%" + tipoDocumento.SelectedItem + 
                    "%' and p.Usuario like '%" + Usuario.Text + 
                    "%';");
                
                SqlDataAdapter adapter = sql.execQueryGrid(query);

                DataSet DataSet = new DataSet();

                adapter.Fill(DataSet, query);

                this.ResultadosGrid.DataSource = DataSet.Tables[query];
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
                this.Close();
            }
        }

        private void Seleccionar_Click(object sender, EventArgs e)
        {
            DataGridViewRow filaSeleccionada;
            DataGridViewCell celdaSeleccionada;
            string idSeleccionado;

            if (ResultadosGrid.SelectedCells.Count == 0)
                return;

            celdaSeleccionada = this.ResultadosGrid.SelectedCells[0];
            if (celdaSeleccionada.ColumnIndex != 0)
            {
                filaSeleccionada = this.ResultadosGrid.Rows[this.ResultadosGrid.SelectedCells[0].RowIndex];
                idSeleccionado = Convert.ToString(filaSeleccionada.Cells[0].Value);
            }
            else
            {
                idSeleccionado = Convert.ToString(celdaSeleccionada.Value);
            }

            if (searchHelp)
            {
                idAfiliado = Convert.ToInt32(idSeleccionado);
                this.Close();
            }
            else
            {
                Decision confirmacion = new Decision();
                confirmacion.Text = "Modificar afiliado";
                confirmacion.label1.Text = "¿Quiere modificar al afiliado " + idSeleccionado + "?";
                confirmacion.ShowDialog();

                if (confirmacion.confirmar)
                {
                    AltaAfiliadoForm modificar = new AltaAfiliadoForm();
                    modificar.modifica = true;
                    modificar.asignarModificacion(idSeleccionado);
                    modificar.Show();
                    this.ResultadosGrid.DataSource = new DataSet();
                }
            }
            
        }

        /*public int usuario_seleccionado()
        {
            int idSeleccionado;
            idSeleccionado = Convert.ToInt32(this.ResultadosGrid.SelectedCells[0].Value);
            return idSeleccionado;
        }*/

        private void Limpiar_Click(object sender, EventArgs e)
        {
           this.ResultadosGrid.DataSource = new DataSet();
           foreach (Control control in this.Controls)
           {
               if ((control.GetType().ToString() == "System.Windows.Forms.ComboBox") | (control.GetType().ToString() == "System.Windows.Forms.TextBox"))
               {
                   control.ResetText();
               }
           }
        }

        private void BajaButton_Click(object sender, EventArgs e)
        {
            SqlCommand darBaja;
            DataGridViewRow filaSeleccionada;
            DataGridViewCell celdaSeleccionada;
            string idSeleccionado;

            celdaSeleccionada = this.ResultadosGrid.SelectedCells[0];
            if (celdaSeleccionada.ColumnIndex != 0)
            {
                filaSeleccionada = this.ResultadosGrid.Rows[this.ResultadosGrid.SelectedCells[0].RowIndex];
                idSeleccionado = Convert.ToString(filaSeleccionada.Cells[0].Value);
            }
            else
            {
                idSeleccionado = Convert.ToString(celdaSeleccionada.Value);
            }

            Decision decision = new Decision();
            decision.Text = "¿Está seguro?";
            decision.label1.Text = "¿Desea dar de baja al afiliado " + idSeleccionado.ToString() + "?";
            decision.ShowDialog();

            if (decision.confirmar)
            {
                darBaja = new SqlCommand("UPDATE b_sharp.Pacientes SET Habilitado = 'N' where Id_Paciente = @idPaciente;", sql.openCon());
                darBaja.Parameters.AddWithValue("@idPaciente", idSeleccionado);
                darBaja.ExecuteNonQuery();
                this.ResultadosGrid.DataSource = new DataSet();
            }

            MessageBox.Show("Usuario " + idSeleccionado + " dado de baja");
        }


       
    }
}
